float4x4 World;
float4x4 View;
float4x4 Projection;
texture TreeTexture;
// TODO: add effect parameters here.
float AlphaTestDirection = 1;
float AlphaTestThreshold = 0.95;

struct VertexShaderInput
{
    float4 Position : POSITION;
    float2 UV : TEXCOORD;
    // TODO: add input channels such as texture
    // coordinates and vertex colors here.
};

struct VertexShaderOutput
{
    float4 Position : POSITION;
    float2 UV : TEXCOORD;
    // TODO: add vertex shader outputs such as colors and texture
    // coordinates here. These values will automatically be interpolated
    // over the triangle, and provided as input to your pixel shader.
};

sampler TreeTextureSampler = sampler_state{
	texture=<TreeTexture>;
}
;
VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
{
    VertexShaderOutput output;
	float4 worldPosition = mul(input.Position, World);
    float4 viewPosition = mul(worldPosition, View);
    output.Position = mul(viewPosition, Projection);
	output.UV=input.UV;
    // TODO: add your vertex shader code here.

    return output;
};

float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0
{
    // TODO: add your pixel shader code here.
	float4 output=float4(1,1,1,1);
	float4 t=tex2D(TreeTextureSampler,input.UV);
	clip((t.a - AlphaTestThreshold) * AlphaTestDirection);
    return t;
}

technique Technique1
{
    pass Pass1
    {
        // TODO: set renderstates here.

        VertexShader = compile vs_2_0 VertexShaderFunction();
        PixelShader = compile ps_2_0 PixelShaderFunction();
    }
}
